close
Kaspersky Endpoint Security

Welcome to

Kaspersky Endpoint Security


By Kaspersky Endpoint Security


[Biotechnologie] Nanjing Wei Chan Connaught Biotechnologie Co., Ltd wird predigen



Die Integration von Facebook Login in AngularJS App mit Satellizer

7. Januar 2016 Kommentare zur Integration von Facebook Login in AngularJS App Off mit Satellizer 226 Aufrufe

Share [sociallocker] Mit dem Aufkommen der Feature-reichen Front-End-Frameworks AngularJS entspricht, eine zunehmende Anzahl von guten Urteil wird an der Eingangs Finish durchgeführt, erinnert an die Datenmanipulation / Validierung, Authentifizierung und extra. Satellizer, ein sehr einfaches Token-basierte völlig Authentifizierungsmodul für AngularJS zu verwenden, vereinfacht das Verfahren von AngularJS in Authentifizierungsmechanismus Durchsetzung Die Bibliothek verfügt über eine integrierte in einen Schub geben, um für Google, Facebook, LinkedIn, Twitter, Instagram, GitHub, Bitbucket, Yahoo, Twitch, und Microsoft (Windows Live) Schulden. anmelden und vor Ort zu diesem Artikel können wir eine ganz einfache Webapp viel wie das hier konstruieren, die Sie aktuelle Person Wissen lässt. Authentifizierung vs Autorisierung Dies sind 2 beängstigend Wörter, die Sie unaufhörlich begegnen, wenn Ihre Anwendung eine Benutzermaschine beginnt zu integrieren. im Einklang mit Wikipedia: Die Authentifizierung der Akt der Bestätigung der Wahrheit eines Attributs aus einem einzigen Stück von Daten (ein Datum), dadurch gekennzeichnetüber eine Einrichtung wahr. Autorisierung wird betrieben von grundsätzlich für die Informationssicherheit und PC-Sicherheit verbunden get Eintritt in Rechte an Tools spezifizieren und Zutrittsrecht zu bekommen, ein Auge auf im Besonderen. In Laie Phrasen, lassen Sie uns mit einigen Personen auf sie beschäftigt eine Instanz eines Weblog-Website. Die Blogger schreiben Artikel und der Manager überprüft den Inhalt. jede einzelne Person kann (Login) in die Maschine authentifizieren jedoch ihre Rechte (Autorisierung) total unterschiedlich sind, so dass der Blogger nicht zufrieden, während der Manager kann überprüft werden kann. JSON net Token Tutorial: Eine Instanz in Laravel und AngularJS Warum Satellizer können Sie Ihre persönliche Authentifizierung Maschine in AngularJS haft folgenden einige Tutorials verwandt mit diesem unverwechselbaren erstellen. Ich empfehle die Lektüre diesen Text als es JWT (JSON net Token) sehr gut und zeigt eine einfache Lösung, um in Kraft gesetzt Authentifizierung in AngularJS die Verwendung von sofort die lokale Speicherung erklärt und HTTPAbfangjäger. Warum also Satellizer? Der wesentliche Grund ist, dass es eine Handvoll von sozialen Netzwerk-Logins verwandt mit Facebook, Twitter und viele andere unterstützt. dies heute, vor allem für Internet-Sites auf Zelle verwendet, Benutzername und Passwort eingeben ist etwas umständlich und Kunden erwarten, so dass Sie Ihre Website mit wenig Mühe mit Hilfe der Nutzung von Social Logins nutzen könnten. das SDK eines jeden sozialen Netzwerken wie Integration und im Anschluss an ihre Dokumentationen leicht wiederholend ist, wird es schön, einen Schub für diesen sozialen Logins mit minimalem Aufwand zu geben. Darüber hinaus Satellizer ist eine energetische Projekt auf Github. jeder so oft zu lesen (jede Person mit Facebook SDK arbeiten, ist sich bewusst, wie nervenaufreibend es ist) aktiv ist der Schlüssel hier, da diese SDKs mäßig ständig austauschen und Sie nicht möchten, dass ihre Dokumentation AngularJS App mit fb Anmeldung ist dies der Ort Dinge beginnen in interessant zu ändern. wir werden eine Internet-App erstellen, die regelmäßig Login / Register hat (das heißt, die Nutzung vonBenutzername, Passwort) Mechanismus und unterstützt soziale Anmeldungen als auch. Diese Webapp kann sehr einfach sein, da es am besten 3 Seiten: Haus Webseite: jeder kann Login-Seite zu sehen: Benutzername / Passwort geheim Webseite eingeben: die am effektivsten für angemeldete Benutzer können für Backend zu sehen, wir Python und Kolben verwenden. Python und der Rahmen Flask sind recht ausdrucks so sein kann, nicht sehr mühsam ich hoffe, den Code in andere Sprachen / Frameworks zu portieren. wir können natürlich, verwenden Sie AngularJS für eintritts Abgang. Und für die sozialen Logins, können wir mit Facebook handlichsten zu kombinieren, wie es das beliebteste soziale Gemeinschaft gegenwärtig ist. Los geht's! Schritt # 1: Bootstrap Unternehmen hier ist, wie wir mit dem Bau können unseren Code: - app.py - statisch / - index.html - app.js - bower.json - partials / - login.tpl.html - dwelling.tpl.html - secret.tpl.html die gesamte wieder-End-Code ist in app.py. Der Front-End-Code wird in statisch / Ordner. Standardmäßig verwenden, Flask wird dazu dienen, mechanisch den Inhaltstatisch / Ordner. die gesamte Teilansichten sind in statisch / partials / und durch das ui.router Modul behandelt. Codierung der wieder-Ende zu beginnen, müssen wir Python 2.7. * und installieren Sie die angegebenen Bibliotheken die Verwendung von Pip. dass Sie könnte in der Tat verwenden virtualenv, um eine Python-Einstellung zu isolieren. unten ist die Liste der erforderlichen Python-Module in requirements.txt zu platzieren: Fläschchen == zero.10.1 PyJWT == 1.4.zero Flask-SQLAlchemy == 1.0-Anforderungen == 2.7.0 all diese Abhängigkeiten zu installieren: pip -r Notwendigkeiten installieren .txt In app.py haben wir einige erste Code bekam Flask Bootstrap (Import-Anweisungen werden der Kürze halber nicht berücksichtigt): app = Flask (__ name__) @ app.route ( '/') def index (): return flask.redirect ( '/static/index.html'), wenn __name__ == '__main__': app.run (debug = richtige) anschließenden wir bower init und installieren AngularJS und ui.router: bower init # hier ist es wichtig, einige Fragen zu beantworten. wenn zweifelhaft, drücken Sie einfach eingeben :) Bower installieren Winkelwinkel-ui-Router --retailer # einrichten und speichern diese Abhängigkeitenin bower.json einmal diese Bibliotheken installiert sind, wollen wir AngularJS und ui-Router in index.html und erstellen Routings für drei Seiten umfassen: Residenz, Login, und geheim. <Body ng-app = "DemoApp"> <a ui-sref="dwelling"> Residenz </a> <a ui-sref="login"> Einloggen </a> <a ui-sref="secret"> Geheime </a> <div ui-Ansicht>
<Script src = "bower_components / Winkel / angular.min.js"> </ script> <script src = "bower_components / Winkel-ui-Router / frei nach oben / Winkel-ui-router.min.js"> </ script > <script src = "main.js"> </ script>

Unten ist der Code, die in primary.js müssen Routing zu konfigurieren:

var app = angular.module ( 'DemoApp' [ 'ui.router']); app.config (function ($ stateProvider, $ urlRouterProvider) $ stateProvider .state ( "Wohnort", URL: '/ Residenz', templateUrl: 'partials / house.tpl.html') .state ( "geheim", URL: ' / secret ', templateUrl:' partials / secret.tpl.html ') .state (' login ', uRL:' / login ', templateUrl:' partials / login.tpl.html '); $ urlRouterProvider.in andere Fall ( '/ home'););

An diesem Punkt in dem Fall, dass Sie den Server Python app.py ausführen, sollten Sie diese gemeinsame Schnittstelle zumin

Die Hyperlinks Residenz, Login und Geheimnis muss auf dieser Ebene arbeiten und den Inhalt Material der entsprechenden Vorlagen zu vermitteln.

Glückwunsch, du fertig einfach in das Skelett setzen! für diejenigen, die auf jeden Fehler kommen, überprüfen Sie bitte den Code auf GitHub

Schritt 2: Anmeldung und Registrierung

am Ende dieses Schrittes, haben Sie eine Webapp, die Sie könnten die Verwendung von E-Mail und Passwort registrieren / einloggen.

Der erste Schritt ist das Backend zu konfigurieren. wir würden ein Consumer-Modell gefällt und eine Strategie der JWT-Token für eine bestimmte Person zu erzeugen. Die Person, Version unter bewiesen ist tatsächlich vereinfacht und nicht durchführt nicht einmal mehr alle gängigen Prüfungen ähnlich wie wenn Container E-Mail bietet Platz für "@", oder wenn Container Passwort beherbergt als mindestens 6 Zeichen, und so weiter.

Typ Person (db.edition): Identifizierung = db.Column (db.Integer, primary_key = echte) e mail = db.Column (db.String (hundert), nullable = False) password = db.Column (db.String (hundert)) def Token (Selbst-): Nutzlast = 'sub': self.id, 'iat': DateTime.UtcNow () 'exp': DateTime.UtcNow ()  Timedelta (Tage = 14) token = jwt .encode (Nutzlast, app.config [ 'TOKEN_SECRET']) return token.decode ( 'unicode_escape')

Wir verwenden das jwt Modul in Python die Nutzlast Phase in JWT zu erzeugen. Die iat und exp Teil entsprechen dem Zeitstempel, der erstellt Token ist und abgelaufen. In diesem Code wird der Token in 2 Wochen abgelaufen sein.

Nachdem die Variation Benutzer einmal erstellt wurde, können wir den "Login" und "Register" Endpunkte hinzuzufügen. Der Code für beide sind ziemlich identisch, so hier werde ich nur das "Register" Phase aufweisen. Bitte beachten Sie, dass standardmäßig unter Verwendung Satellizer die Endpunkte / Auth / Loginname wird und / Auth / Anmeldungen für den "Login" und "Register" bezeichnet.

@ App.route ( '/ Auth / Anmeldungen', Methoden = [ 'POST']) def Anmeldungen (): data = request.json email = Wissen [ "Email"] password = Wissen [ "password"] user = Person ( e mail = E-Mail, Passwort = Passwort) db.session.add (Benutzer) db.session.commit () return jsonify (Token = user.token ())

Lassen Sie uns den Endpunkt die Verwendung von curl ersten Test:

curl localhost: 5000 / Auth / Anmeldungen -H "Content-Type: application / json" -X -d submit ' "E-Mail": "werfen Sie einen Blick at@abcd.com", "Passwort": "xyz"'

das Ergebnis sollte so scheinen:

"Token": "sehr lange Zeichenfolge ...."

Nun, da der wieder-Finish-Abschnitt ist fertig, lassen Sie uns den Eingang-End-Angriff! Zuerst wollen wir Satellizer und fügen Sie es als eine Abhängigkeit in major.js zu installieren:

Bower installieren Satellizer --retailer

In Satellizer als Abhängigkeit:

var app = angular.module ( 'DemoApp' [ 'ui.router', 'Satellizer']);

Einloggen und Anmeldungen in Satellizer ist in der Tat ziemlich einfach im Vergleich zu den gesamten Aufbau, es sei denn jetzt:

() $ Auth .signup $ scope.signUp = ausführen (E-Mail: $ scope.electronic Mail, Passwort: $ scope.password) .dann (function (Antwort) // das Token Set gekauft von Server $ auth.setToken (Antwort ); // gehen auf geheime Webseite $ state.go ( "geheim");) .seize (function (Antwort) console.log ( "Fehlerreaktion", Reaktion););

wenn im Fall, dass Sie ein Problem an Ort und Stelle setzen Sie den Code, dass Sie den Code auf GitHub überprüfen konnte.

Schritt #three aber geheime Ansicht sollte nicht in der Tat geheim sein, weil jede einzelne Es reicht!

sicher, das ist richtig! außer jetzt kann jede Person, um geheime Webseite gehen, ohne sich anzumelden.

Es ist Zeit, um einige Abfangjäger in AngularJS hinzufügen, um sicherzustellen, dass, wenn eine Person auf geheime Webseite geht und wenn dieser Verbraucher nicht angemeldet werden sollen, werden sie auf der Login-Seite umgeleitet werden.

Erstens müssen wir ein Flag requiredLogin zu unterscheiden geheimen Web-Seite von verschiedenen diejenigen hinzufügen.

.state ( "geheim", URL: '/ secret', templateUrl: 'partials / secret.tpl.html' Regler: 'SecretCtrl', Informationen: requiredLogin: Ist)

Die "Information" Phase wird wahrscheinlich innerhalb der $ stateChangeStart Ereignis verwendet werden, die jedesmal, wenn die Routing-Änderungen ausgelöst wird:

app.run (führen ($ rootScope, $ Zustand, $ auth) $ rootScope $ auf ( '$ stateChangeStart', führen (Abenteuer, toState) var requiredLogin = false;. // überprüfen, ob dieser Zustand anmelden wollen, wenn (toState.data && toState.knowledge.requiredLogin) requiredLogin = tatsächliche; // wenn ja, und wenn diese Verbraucher sind noch nicht angemeldet ist, leiten Sie ihn zur Login-Seite if (requiredLogin && $ auth.isAuthenticated (!)) Event.preventDefault (); $ state.go ( 'login');););

Nun kann die Person gehen nicht in einem Augenblick auf den Schlüssel Seite mit in der Anmeldung. Hooray!

Wie gewöhnlich, wird der Code für diesen Schritt auch hier entdeckt werden.

Schritt #four: Es ist Zeit, eine Sache in der Tat Geheimnis zu bekommen!

An dieser zweiten, gibt es nichts in der Tat Geheimnis in der geheimen Webseite. Lassen Sie uns es eine Sache privat setzen.

Dieser Schritt beginnt mit der in der Back-Oberfläche wachsenden einen Endpunkt verwendet, die einfachste, erhältlich für einen authentifizierten Verbraucher, das entspricht einem legitimen Token zu haben. Der Endpunkt / user unten gibt die user_id und E-Mail der Person, ähnlich dem Token.

@ App.route ( '/ user') def user_info (): # das Token, wenn nicht mehr request.headers.get im Authorization-Header gesetzt wird ( 'Authorization'): return jsonify (Fehler = 'Authorization-Header fehlt'), 401 # dieser Header sieht wie folgt aus: "Authorization: Inhaber Token" Token = request.headers.get ( 'Authorization') zerschneiden () [1] versuchen:. Nutzlast = jwt.decode (Token, app.config [ ' TOKEN_SECRET ']) außer DecodeError: return jsonify (Fehler =' Ungültige token '), 401 mit Ausnahme ExpiredSignature: return jsonify (Fehler =' abgelaufen token '), 401 anderes: user_id = Nutzlast [' sub '] user = Verbraucher. question.filter_by (id = Benutzer-ID) .First (), wenn der Verbraucher ist None: return jsonify (error = 'müssen nun nicht passieren ... "), 500 Rückkehr jsonify (id = person.identity, E-Mail = Verbraucher .E Mail), 200 Rückkehr jsonify (error = "keineswegs erreichen hier ..."), 500

wieder, wir nutzen das Modul jwt das JWT Token in der "Genehmigung" Header integriert zu entschlüsseln und den Fall zu behandeln, wenn das Token oder jetzt abgelaufen ist nicht gültig.

Lassen Sie uns an diesem Endpunkt die Verwendung von curl einen Blick. Zunächst wollen wir einen Sound-Token zu erhalten:

curl localhost: 5000 / Auth / Anmeldungen -H "content-Art: utility / json" -X -d veröffentlichen ' "E-Mail": "test@abcd.com", "Passwort": "xyz"'

Dann mit diesem Token:

curl localhost: 5000 / Person -H "Authorization: Inhaber das Token setzen hier"

Das macht den Folge:

"E-Mail": "check@abcd.com", "id": 1

Jetzt müssen wir diesen Endpunkt innerhalb des geheimen Controller zu umarmen. Dies ist relativ einfach, da wir einfach den Endpunkt der Verwendung des gemeinsamen $ http Modul anrufen müssen. Das Token wird an den Header durch Satellizer mechanisch eingesetzt, so brauchen wir nicht zu Ärger mit allen wichtigen Punkten von den Token zu speichern und sie dann in der rechten Kopfschuss.

getUserInfo (); betreiben getUserInfo () $ http.get ( '/ Person') .dann (betreiben (Antwort) $ scope.person = response.data;) .trap (function (Antwort) console.log ( "getUserInfo Fehler", Reaktion); )

Schließlich haben wir jetzt etwas tatsächlich persönlich in der geheimen Seite!

Der Code dieses Schrittes ist auf GitHub.

Schritt # 5: Facebook Login mit Satellizer

eine nette Sache über Satellizer, wie zu Beginn erwähnt, ist es macht soziale Login Lasten einfacher zu integrieren. am Ende dieses Schrittes können Benutzer anmelden ihre Facebook-Konto!

Erste, was zu tun ist, eine Anwendung auf fb Entwickler Seite in dem Bemühen, schaffen eine application_id und einen geheimen Code zu haben. Bitte folgen Sie developers.fb.com/doctors/apps/register eine Facebook-Entwickler-Konto für diejenigen zu schaffen, die man nicht haben bereits und eine Webseite App erstellen. Danach, gehen Sie unter die Anwendung von Identität und Utility-Geheimnis, wie im Screenshot zu haben.

sobald der Verbraucher mit fb zu verbinden wählt, Satellizer wird einen Autorisierungscode an den Endpunkt / Auth / Facebook senden. Mit diesem Berechtigungscode kann die Back-End ein get Eintrag abrufen von fb / oauth Endpunkt Token, das den Aufruf erlaubt, Graph API fb Verbraucherinformation verwandt Bereich zu bekommen, user_friends, Person E-Mail, und viele andere.

Wir wollen zusätzlich den Überblick zu erhalten, ob ein Benutzerkonto mit Facebook erstellt oder über gemeinsame Anmeldungen. dies zu tun, fügen wir unserer User-Version facebook_id.

facebook_id = db.Column (db.String (hundert))

Die Facebook-Geheimnis über env Variablen konfiguriert FACEBOOK_SECRET, dass wir zu app.config hinzufügen.

app.config [ 'FACEBOOK_SECRET'] = os.environ.get ( 'FACEBOOK_SECRET')

so dass Sie die app.py starten können, werden Sie diese env Variable gesetzt haben:

FACEBOOK_SECRET = Ihr Geheimnis Python app.py

Hier ist die Taktik, die Facebook-Anmeldungen behandelt. mit Hilfe von Standard Satellizer den Endpunkt / Auth / facebook nennen.

@ App.route ( '/ Auth / facebook', Methoden = [ 'POST']) def auth_facebook (): access_token_url = 'graph_api_url =' params = 'client_id': request.json [ 'clientId'], 'redirect_uri': request.json [ 'redirectUri'], 'client_secret': app.config [ 'FACEBOOK_SECRET'], 'Code': request.json [ 'code'] # Austauschautorisierungscode für die Zulassung zu bekommen, um Token. r = requests.get (access_token_url, params = params) # Verwendung json.loads als Ersatz von urlparse.parse_qsl access_token = json.hundreds (r.textual Inhalt) # Schritt 2. Details abrufen über den aktuellen Benutzer. r = requests.get (graph_api_url, params = access_token) Profil = json.masses (r.textual Inhalt) # Schritt drei. Erstellen Sie eine Marke neues Konto oder geben eine gegenwärtige. . User = user.question.filter_by (facebook_id = Profil [ 'id']) erste (), wenn der Benutzer: return jsonify (Token = consumer.token ()) u = user (facebook_id = Profil [ 'id'], email = Profil [ 'E-Mail'])db.session.add (u) db.session.commit () return jsonify (Token = u.token ())

Um eine Anfrage an den fb Server versenden, verwenden wir das auf die Hand Modul Anfragen. Jetzt ist der harte Abschnitt auf der wieder-Finish ist getan. An der Eingangsende, fb Login Hinzufügen ist ziemlich einfach. Erstens müssen wir unsere Satellizer facebook_id mit Hilfe der Zugabe von diesen Code in app.config zu informieren arbeiten:

$ AuthProvider.fb (clientId: Ihre fb App Identifikation, // standardmäßig die Umleitung URI ist redirectUri: ');

Um die Nutzung von Facebook anmelden, können wir rufen Sie einfach an:

$ Auth.authenticate ( "Facebook")

Wie üblich, mit dem Sie einen Blick auf den Code auf GitHub nehmen könnte

Zu diesem Zeitpunkt ist die Webapp Leistung voll im Zusammenhang. Der Verbraucher kann die Verwendung von normalen E-Mail und Passwort oder über einloggen / registrieren facebook zu verwenden. Wenn Sie angemeldet sind, kann der Benutzer seine geheime Seite.

Machen Sie eine attraktive Schnittstelle

Die Schnittstelle sollte nicht sehr schön sein an dieser Stelle, also lassen Sie uns für das Format und die Winkel Toaster Modul mit einer Fehlermeldung ein bisschen etwas von Bootstrap hinzufügen effektiv zu behandeln, entsprechend, wenn die Anmeldung fehlschlägt.

Der Code für diese Verschönerungs Abschnitt finden Sie hier.

Schlussfolgerung

dieser Artikel Präsentationen eine Schritt-Weg-Schritt-Integration von Satellizer in einer (einfachen) AngularJS Webapp. Mit Satellizer, werden wir einfach andere soziale Logins erinnert an Twitter, Linkedin und mehr hinzuzufügen. Der Code auf der Eintrittsende ist relativ die gleiche wie in dem Artikel. dann wieder, ändert sich die Back-End als soziales Netzwerk SDKs verschiedene Endpunkte mit völlig unterschiedlichen Protokollen. dass Sie einen Blick auf dem enthält Beispiele für fb, Github, Google, Linkedin, Twiter und Bitbucket nehmen konnte. Wenn Sie unsicher sind, müssen Sie die Dokumentation Check-out

der Autor vollständige Profil über »den Autor Son Nguyen Kim, Frankreich Mitglied mieten bedenkt, dass kann nur 1, 2015 C # JavaPythonVisual StudioAndroid Son extrem Experte mit Gerätetechnik und ML-Algorithmen ist, und immer wieder Probleme mit einem leicht zu bewältigen versucht, anstrengend, aber effizient Methode letztlich den Code wartbar zu machen. Als Unternehmer ist er zu seiner Arbeit gewidmet und ist mit voll die Bedeutung von Verantwortung und Proaktivität vertraut. Er kann effizient mit jedem geschäftlichen und technischen Facetten in Kontakt bleiben. [Klicke um Fortzufahren…]
Mieten? Treffen Sie die Top-10-Freiberuflicher AngularJS Entwickler zu mieten in Januar 2016
[/sociallocker]
2016-01-07
Share

Endpoint-Security 2012     Endpoint-Security-10

Categories and tags